<?php

namespace App\Http\Controllers\Test;

use App\Models\Article;
use App\Http\Controllers\Controller;
use App\Service\Dir;
use Dompdf\Dompdf;
use Mpdf\Mpdf;

class DirController extends Controller
{
    // 文件夹操作管理
    public function initialize()
    {
        parent::initialize();
    }

    // 读取模型文件（树状文件夹）
    // http://www.jjcj.com/test/dir/read-model
    public function readModel()
    {
        $dir   = new Dir();
        $files = $dir->readDir(app_path('Models'));
        echo '<pre>';
        var_export($files);
    }

    // 读取模型文件（树状文件夹）
    // http://www.jjcj.com/test/dir/read-model
    public function image()
    {
        $dir   = new Dir();
        $files = $dir->readDir('D:\phpSite\slcm\cdn\static\adv');
        echo '<pre>';
        var_export($files);
    }

    // 删除缓存文件（树状文件夹）

    // 图片
    // http://www.atw.com/test/dir/img
    public function img()
    {
        // HTML 内容
        $html = '<h1>Hello, World!</h1><p>This is a sample HTML to be converted to PDF.</p>';

        // 使用 dompdf
        $dompdf = new Dompdf();
        $dompdf->loadHtml($html);
        $dompdf->render();

        $pdf_name  = public_path().DIRECTORY_SEPARATOR.'abc.pdf';
        $img_name  = public_path().DIRECTORY_SEPARATOR.'abc.png';
        $img_name2 = public_path().DIRECTORY_SEPARATOR.'abc2.png';

        // TODO 保存文件
        // $dompdf->Output();
        // 保存 PDF 文件
        file_put_contents('output.pdf', $dompdf->output());
        file_put_contents($pdf_name, $dompdf->output());

        // 输出 PDF
        //$dompdf->stream("output.pdf");

        $imagick = new \Imagick();
        //$imagick->readImage('output.pdf');  // 执行失败
        $imagick->readImage($pdf_name);  // 执行失败
        $imagick->writeImages('output.jpg', false);

        $imagick->clear();
        $imagick->destroy();

        echo '成功';
    }

    // 用pdf转html
    public function pdfImage()
    {
        $w    = 414;
        $h    = 736;
        $html = '<h1>sdsd</h1>';
        $mpdf = new Mpdf();
        //设置中文字体(很重要 它会影响到第二步中 图片生成)
        $mpdf->autoScriptToLang = true;
        $mpdf->autoLangToFont   = true;

        //设置pdf的尺寸
        //$mpdf->WriteHTML('<pagebreak sheet-size="'.$w.'mm '.$h.'mm" />');

        //设置pdf显示方式
        $mpdf->SetDisplayMode('fullpage');

        //删除pdf第一页(由于设置pdf尺寸导致多出了一页)
        //$mpdf->DeletePages(1,1);
        $mpdf->WriteHTML($html);

        $pdf_name  = public_path().DIRECTORY_SEPARATOR.'abc'.DIRECTORY_SEPARATOR.'abc.pdf';
        $img_name  = public_path().DIRECTORY_SEPARATOR.'abc'.DIRECTORY_SEPARATOR.'abc.png';
        $img_name2 = public_path().DIRECTORY_SEPARATOR.'abc'.DIRECTORY_SEPARATOR.'abc2.png';
        $mpdf->Output($img_name);


        $im = new \Imagick();
        $im->setResolution($w, $h); //设置分辨率
        $im->setCompressionQuality(15);//设置图片压缩的质量
        //$im->readImageFile(fopen($pdf_name,'r'));
        //$im->readImage($pdf_name);
        $im->readImage($img_name);
        //$im->readImage('https://www.baidu.com/index.html');
        //$im->readImage('https://www.baidu.com/img/flexible/logo/pc/result.png');
        $im->resetIterator();

        $imgs = $im->appendImages(true);
        $imgs->setImageFormat("png");
        $imgs->writeImage($img_name2);
        $imgs->clear();
        $imgs->destroy();

        $im->clear();
        $im->destroy();

        return $img_name2;
    }


    // html图片
    public function htmlImage()
    {
        $ds    = DIRECTORY_SEPARATOR;
        $font  = public_path().$ds.'fonts'.$ds.'TaurusNormal.woff';
        $html  = '<h1>展示html内容</h1>';
        $html  .= '<div>展示html内容</div>';
        $image = new \Imagick();
        $draw  = new \ImagickDraw();
        $pixel = new \ImagickPixel('gray');
        $image->newImage(800, 75, $pixel);
        $pixel->setColor('black');
        $draw->setFont($font);
        $draw->setFontSize(30);
        $image->annotateImage($draw, 10, 45, 0, $html);
        $image->setImageFormat('png');
        // 保存图像为 output.png
        $image->writeImage('output.png');
        header('Content-type: image/png');
        echo $image;
        die;
    }

    // 修改文件的名字
    //  http://www.slh.com/test/dir/re-name
    public function reName()
    {
        //  rename($path.'/20130722020708.jpg', $path.'/c.jpg');
        // 读取文件目录
        $path = 'C:\Users\shenlan03\Desktop\可用默认头像';
        //$path = 'C:\Users\shenlan03\Desktop\可用默认头像\纯色';
        $open = opendir($path);
        if(!$open){
            return $this->error('没有文件');
        }

        // 循环获取文件 并 修改文件名
        $ii = 1;
        while(($v = readdir($open)) !== false){
            if('.' == $v || '..' == $v){
                continue;
            }

            $old = $path.'/'.$v;
            $new = $path.'/face_'.$ii.'.jpg';
            if(is_dir($old)){
                continue;
            }
            // 修改文件名称
            if(is_file($old)){
                rename($old, $new);
            }
            // 数量
            $ii++;
        }

        return $this->success();
    }


}


